[Unit]
Description=Elasticsearch-{{es_instance_name}}
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
Environment=ES_HOME={{es_home}}
Environment=CONF_DIR={{conf_dir}}
Environment=DATA_DIR={{data_dir}}
Environment=LOG_DIR={{log_dir}}
Environment=PID_DIR={{pid_dir}}
EnvironmentFile=-{{instance_default_file}}

User={{es_user}}
Group={{es_group}}

ExecStart={{es_home}}/bin/elasticsearch \
                                        -Des.pidfile=${PID_DIR}/elasticsearch.pid \
                                        -Des.default.path.home=${ES_HOME} \
                                        -Des.default.path.logs=${LOG_DIR} \
                                        -Des.default.path.data=${DATA_DIR} \
                                        -Des.default.path.conf=${CONF_DIR}



# Connects standard output to /dev/null
StandardOutput=null

# Connects standard error to journal
StandardError=journal

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535

# Specifies the maximum number of bytes of memory that may be locked into RAM
# Set to "infinity" if you use the 'bootstrap.mlockall: true' option
# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in {{instance_default_file}}
{% if m_lock_enabled %}
LimitMEMLOCK=infinity
{% endif %}

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0

# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM

# Java process is never killed
SendSIGKILL=no

# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target